home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 363_01 / asm68020.doc < prev    next >
Text File  |  1991-09-25  |  29KB  |  730 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.                                      68020
  19.                                 CROSSASSEMBLER
  20.  
  21.                                  Version 1.0
  22.                                  Autumn 1991
  23.  
  24.                                       by
  25.  
  26.                                Andrew E. Romer
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.      The information in this document has been carefully checked and is
  34. believed to be entirely reliable. No responsibility, however, is assumed for
  35. inaccuracies.
  36. Index
  37. 1.  Introduction
  38. 2.  Assembler command line
  39. 3.  Source file format
  40.     3.1. Empty statement
  41.     3.2. Label statement
  42.     3.3. Comment statement
  43.     3.4. Full statement
  44. 4.  Statement fields
  45.     4.1. Label field
  46.     4.2. Operation field
  47.     4.3. Operand field
  48.     4.4. Comment field
  49. 5.  Character set
  50. 6.  Microprocessor instructions
  51. 7.  Assembler directives
  52.     7.1. END
  53.     7.2. ORG
  54.     7.3. EQU
  55.     7.4. SET
  56.     7.5. REG
  57.     7.6. DC - define constant
  58.     7.7. DCB - define constant block
  59.     7.8. DS - define storage
  60. 8.  Expressions
  61.     8.1. Numeric values
  62.     8.2. Order of precedence
  63.     8.3. Operators
  64. 9.  Assembler processing
  65. 10. Addressing modes
  66.     10.1. Size
  67.     10.2. QUICK instructions
  68. 11. Assembler output
  69. 12. Assembly listing
  70. 13. Error reporting
  71. 14. References
  72.  
  73.  
  74. 1. Introduction.
  75.  
  76.     The 68020 Cross-Assembler is an IBM PC (or compatible) program that
  77. processes source program statements written in the 68020 Assembly Language and
  78. produces machine-readable binary code.
  79.     This Assembler is an upgrade of the 68000 Cross-Assembler, Ref. 2; it has
  80. been designed to conform to the format defined by Motorola (Ref. 1).
  81.  
  82. 2. Assembler command line
  83.  
  84.     The Assembler is invoked by the following command line, entered at the DOS
  85. prompt:
  86.  
  87.             asm [-switches] filename
  88.  
  89.  
  90. where 'filename' is the name of the source file. If 'filename' has no
  91. extension then '.asm' extension is assumed by default. Otherwise the specified
  92. extension is used.
  93.  
  94.     The following optional switches are valid:
  95.  
  96.              c  - Generates full hex code listing. Only one line of listing is
  97.                   generated by default. This switch has no effect if the -l
  98.                   switch is not invoked.
  99.              h  - Displays a brief help message on the screen. No other
  100.                   switches have any effect if this switch is invoked, and
  101.                   'filename' is not processed.
  102.              l  - Enables assembly listing file 'filename.lis' generation.
  103.                   No assembly listing file is generated by default.
  104.              n  - Disables the target code generation. The target code
  105.                   'filename.h68'is generated by default.
  106.  
  107.     The switches can be entered, in arbitrary sequence, without intervening
  108. spaces, after the '-' character, or each switch can be entered following a
  109. separate '-', in which case separating spaces are required. Therefore the
  110. following examples are valid:
  111.  
  112.             asm -lc filename
  113.             asm -cl filename
  114.             asm -l -c filename
  115.  
  116.     The help message can also be displayed by entering:
  117.  
  118.                 -  asm
  119.  
  120. (without arguments), or
  121.  
  122.                 -  asm ?
  123.  
  124. at the DOS prompt.
  125.  
  126. 3. Source file format
  127.  
  128.     An assembler source file is an ASCII file which contains a sequence of
  129. source statements. The first source statement begins with the first character
  130. of the source file and is terminated by the 'newline character', NL; the
  131. statements following the first are delimited by NL's.
  132.     Under DOS NL is a sequence of two characters: Carriage Return CR
  133. (hexadecimal 0D) followed by Line Feed LF (hexadecimal 0A). The characters
  134. contained between, but excluding, the NL delimiters are the statement context.
  135.  
  136. 3.1. Empty statement
  137.  
  138.     A source statement whose context consists exclusively of white space
  139. (blanks and horizontal tabs) is called an empty statement. Empty statements do
  140. not generate target code, but are included in the assembly listing.
  141.  
  142. 3.2. Label statement
  143.  
  144.     A label statement consists of a 'valid first label-character', optionally
  145. followed by a sequence of 'valid subsequent label-characters', followed by a
  146. colon ':', and, optionally, by white space. Valid first, and subsequent, label
  147. characters are defined in the paragraph "label field" below.
  148.     No white space may precede the label.
  149.  
  150. 3.3. Comment statement
  151.  
  152.     A statement beginning with the asterisk ('*') is a comment statement.
  153. Comment statements do not generate target code, but their context is included
  154. in the assembly listing. Comments can also be included in the comment field of
  155. a full statement.
  156.  
  157.  
  158. 3.4. Full statement
  159.  
  160.     A full statement consists of up to 4 fields: label field, operation field,
  161. operand field, and comment field. The fields are separated by white space.
  162.     The label field is optional as a rule. The exceptions from this rule are
  163. listed in 7.
  164.     The operation field is obligatory. The operand field is not always
  165. required, and if it is not required then the characters entered in the operand
  166. field are regarded as belonging to the comment field. The comment field is
  167. optional.
  168.  
  169. 4. Statement fields
  170.  
  171. 4.1. Label field
  172.  
  173.     If the first character of a statement line is a white-space character then
  174. the label field is empty. Otheriwse it must be a 'valid first label-character',
  175. optionally followed by 'valid subsequent label-characters'.
  176.     Valid first label-character may be any of the following:
  177.  
  178.     - letters of the alphabet A...Z, a...z
  179.     - the underscore _
  180.     - the full stop .
  181.  
  182. and valid subsequent label-characters may be:
  183.  
  184.     - letters of the alphabet A...Z, a...z
  185.     - the numerals 0...9
  186.     - the underscore _
  187.  
  188.     Upper and lower case letters are not distinct, i.e. name, NAME or nAMe are
  189. regarded as identical. Only the first eight characters are significant, i.e.
  190. longname, longnameone, longname123 are regarded as identical, but will be
  191. passed to the assembly listing unchanged, as will the spelling using upper and
  192. lower cases.
  193.     Using labels differing in the characters beyond the eighth, and labels
  194. using different case spelling, is not recommended as it makes the source code
  195. more difficult to understand.
  196.     Certain operations require the label field to be present, and some require
  197. it not to be present (7. Assembler directives). If the source line contravenes
  198. either of these requirements then an error message, or warning message, is
  199. generated by the assembler (see 13. Error reporting).
  200.     Labels associated with an opcode become equal to the value of the
  201. assembler program counter at the time when the source line is read; those
  202. associated with directives are defined by the directive itself.
  203.     The uses of a label include: a symbol in an expression,  an address
  204. pointer.
  205.  
  206. 4.2. Operation field
  207.  
  208.     An operation field is always required in a full statement. An operation,
  209. represented by the operation mnemonic, can either be a microprocessor
  210. instruction, or an assembler directive. An instruction, together with its
  211. operand, if required, will cause the assembler to generate a corresponding
  212. binary operation code (opcode) that can be acted upon by the microprocessor.
  213. The opcode generated is entered as a sequence of hexadecimal digits in the
  214. target and listing files.
  215.     An assembler directive generates no opcode, it instructs the assembler to
  216. follow a specified course of action instead.
  217.  
  218. 4.3. Operand field
  219.  
  220.     If the opcode or directive requires an operand then the field immediately
  221. following the operation field is the operand field, otherwise it is the
  222. comment field. The operand field format depends on the operation it follows.
  223. For microprocessor instructions (opcodes) the operand format will be found in
  224. Ref. 1, for directives it will be defined together with the directive
  225. definition in this manual, see 7. Assembler directives.
  226.     If an operand is absent, and it is required for an operation, then an error
  227. message is issued.
  228.  
  229. 4.4. Comment field
  230.  
  231.     The comment field is optional. It generates no code, but is passed to the
  232. assembly listing unchanged. I